import dayjs from 'dayjs'
import quarterOfYear from 'dayjs/plugin/quarterOfYear'
import isoWeek from 'dayjs/plugin/isoWeek'
dayjs.extend(isoWeek)
dayjs.extend(quarterOfYear)

export default {
  load(time) {
    return dayjs.unix(time)
  },
  // 获取对象
  get(time) {
    return this.load(time).toDate()
  },
  // 获取时间戳
  unix(date) {
    return dayjs(date).unix()
  },
  // 格式化
  format(time) {
    return this.load(time).format('DD/MM/YYYY HH:mm')
  },
  // 取日期
  date(time) {
    return this.load(time).format('DD/MM/YYYY')
  },
  // 取时分秒
  hms(time) {
    return this.load(time).format('HH:mm:ss')
  },
  // 取可用与文件名的日期
  file() {
    return dayjs().format('YYYY-MM-DD')
  },
  // 时间可用的Code
  code() {
    return dayjs().format('YYYYMMDDHHmmss')
  },
  // 今日0点
  day() {
    return dayjs(new Date().toLocaleDateString())
  },
  // 当前时间
  current() {
    return dayjs()
  },
  // 时间戳区间
  unixArr(time) {
    return [
      this.unix(time[0]),
      // 加上一天的截止时间 
      dayjs(time[1]).add(1, 'day').unix() - 1
    ]
  },
  // 开始和结束
  startEnd(name, add = 0, date = undefined) {
    const time = dayjs(date).add(add, name)
    return [
      time.startOf(name == 'week' ? 'isoWeek' : name),
      time.endOf(name == 'week' ? 'isoWeek' : name),
    ]
  },
  startEndUnix(name, add = 0, date = undefined) {
    const time = this.startEnd(name, add, date)
    return [
      time[0].unix(),
      time[1].unix(),
    ]
  },
  // 分割日期  startEnd 的返回值
  splitStartEnd(date, add, unit) {
    const data = []
    let start = date[0]
    while(!date[1].isBefore(start)) {
      const next = start.add(add, unit).endOf(unit)
      data.push([start.startOf(unit), next])
      start = next.add(1, 'second')
    }
    return data
  }
}